[IA64] rewrite of last util.c patch
authorawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Mon, 31 Jul 2006 19:12:30 +0000 (13:12 -0600)
committerawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Mon, 31 Jul 2006 19:12:30 +0000 (13:12 -0600)
Rewrite utils.c patch to be less ugly:
do not set area->phys_addr, recompute phys_addr in free_vm_area.

Signed-off-by: Tristan Gingold <tristan.gingold@bull.net>
linux-2.6-xen-sparse/arch/ia64/xen/util.c

index 18a827c85a682e769e1ed019a9a61504b9e02db7..cb75c504fcc0e68b957fc198181855028a0150af 100644 (file)
@@ -54,7 +54,7 @@ struct vm_struct *alloc_vm_area(unsigned long size)
         area->size = size;
         area->pages = NULL; //XXX
         area->nr_pages = nr_pages;
-        area->phys_addr = __pa(virt);
+        area->phys_addr = 0;   /* xenbus_map_ring_valloc uses this field!  */
 
        return area;
 
@@ -70,15 +70,13 @@ void free_vm_area(struct vm_struct *area)
 {
        unsigned int order = get_order(area->size);
        unsigned long i;
-
-       /* xenbus_map_ring_valloc overrides this field!  */
-       area->phys_addr = __pa(area->addr);
+       unsigned long phys_addr = __pa(area->addr);
 
        // This area is used for foreign page mappping.
        // So underlying machine page may not be assigned.
        for (i = 0; i < (1 << order); i++) {
                unsigned long ret;
-               unsigned long gpfn = (area->phys_addr >> PAGE_SHIFT) + i;
+               unsigned long gpfn = (phys_addr >> PAGE_SHIFT) + i;
                struct xen_memory_reservation reservation = {
                        .nr_extents   = 1,
                        .address_bits = 0,